home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / workbench / docs / asm_guide / examples / directory.s < prev    next >
Text File  |  1991-10-24  |  3KB  |  170 lines

  1. ;*******************************************************
  2. ;*     Window Example show how to make some basic      *
  3. ;*  library calls. And how to use the include files    *
  4. ;*                                                     *
  5. ;*      ASM-One example coded by Rune Gram-Madsen      *
  6. ;*                                                     *
  7. ;*       All rights reserved. Copyright (c) 1990       *
  8. ;*******************************************************
  9.  
  10.     INCDIR    df0:include/
  11.  
  12. ;---  Open library  ---
  13.  
  14.     include    exec/exec_lib.i
  15.     include    libraries/dos_lib.i
  16.     include    libraries/dos.i
  17.     include    intuition/intuition_lib.i
  18.  
  19. J    LEA    PATH(PC),A0        ; Default CLI message
  20.     MOVE.L    A0,-(A7)        ; Store CLI message
  21.  
  22.     BSR.W    DOS_LIBOPEN        ; Open dos library
  23.     BSR.L    WINDOW_OPEN        ; Open window
  24.     BSR.L    INT_LIBOPEN        ; Open intuition library
  25.     BSR.L    WORKBENCH_FRONT        ; Put the workbench to front
  26.  
  27.     MOVE.L    (A7)+,D1        ; Path pointer
  28.     MOVEQ    #-2,D2            ; Read mode
  29.     CALLDOS    Lock            ; Lock
  30.     TST.L    D0
  31.     BEQ.S    .ERROR            ; Not found ??
  32.     MOVE.L    D0,D5
  33.  
  34.     MOVE.L    D5,D1
  35.     MOVE.L    #FILEINFO,D2
  36.     CALLDOS    EXAMINE            ; Examine first lock
  37.     TST.L    D0
  38.     BEQ.S    .ERROR
  39.  
  40.     MOVE.L    #TEXT2,D2
  41.     MOVEQ    #TEXT2_END-TEXT2,D3
  42.     MOVE.L    _WINDOWHANDLE(PC),D1
  43.     CALLDOS    Write
  44.  
  45. .LOOP    MOVE.L    #FILEINFO+8,D0        ; Disk/Dir/File-name ptr
  46.     BSR.W    TEXT_PRINT        ; Print name
  47.  
  48.     MOVE.L    D5,D1
  49.     MOVE.L    #FILEINFO,D2
  50.     CALLDOS    EXNEXT            ; Next name on the disk
  51.     TST.L    D0
  52.     BNE.B    .LOOP
  53.  
  54. .ERROR    CALLDOS    IOERR            ; Get message
  55.  
  56. ;--- Close down ---
  57.  
  58.     MOVE.L    #TEXT1,D2
  59.     MOVEQ    #TEXT1_END-TEXT1,D3
  60.     MOVE.L    _WINDOWHANDLE(PC),D1
  61.     CALLDOS    Write
  62.  
  63.     MOVE.L    #RETURN,D2
  64.     MOVEQ    #1,D3
  65.     MOVE.L    _WINDOWHANDLE(PC),D1
  66.     CALLDOS    Read
  67.  
  68.     BSR.L    WORKBENCH_BACK        ; workbench back again
  69.     BSR.W    INT_LIBCLOSE        ; close intuition lib
  70.     BSR.S    WINDOW_CLOSE        ; Close window
  71.     BSR.S    DOS_LIBCLOSE        ; close dos
  72.     RTS
  73.  
  74. ;--- Open dos library ---
  75.  
  76. DOS_LIBOPEN
  77.     LEA.L    _DOSNAME(PC),A1
  78.     MOVEQ    #0,D0
  79.     CALLEXEC OpenLibrary
  80.     MOVE.L    D0,_DOSBASE
  81.     RTS
  82.  
  83. ;--- Close dos library ---
  84.  
  85. DOS_LIBCLOSE
  86.     MOVE.L    _DOSBASE(PC),A1
  87.     CALLEXEC CloseLibrary
  88.     RTS
  89.  
  90. ;---  Print text  ---
  91.  
  92. TEXT_PRINT:
  93.     MOVE.L    D0,A0
  94. .LOOP    TST.B    (A0)+
  95.     BNE.S    .LOOP
  96.     SUB.L    D0,A0
  97.     SUBQ.L    #1,A0
  98.     MOVE.L    A0,D3
  99.     MOVE.L    D0,D2
  100.     MOVE.L    _WINDOWHANDLE(PC),D1
  101.     CALLDOS    Write
  102.     MOVE.L    #RETURN,D2
  103.     MOVEQ    #1,D3
  104.     MOVE.L    _WINDOWHANDLE(PC),D1
  105.     CALLDOS    Write
  106.     RTS
  107.  
  108. ;--- Open window ---
  109.  
  110. WINDOW_OPEN:
  111.     MOVE.L    #_WINDOWNAME,D1
  112.     MOVE.L    #MODE_OLDFILE,D2
  113.     CALLDOS    Open
  114.     MOVE.L    D0,_WINDOWHANDLE
  115.     RTS
  116.  
  117. ;--- Close window ---
  118.  
  119. WINDOW_CLOSE
  120.     MOVE.L    _WINDOWHANDLE(PC),D1
  121.     CALLDOS    Close
  122.     RTS
  123.  
  124. ;--- Open intuition library ---
  125.  
  126. INT_LIBOPEN
  127.     LEA.L    _INTNAME(PC),A1
  128.     MOVEQ    #0,D0
  129.     CALLEXEC OpenLibrary
  130.     MOVE.L    D0,_INTUITIONBASE
  131.     RTS
  132.  
  133. ;--- Close intuition library ---
  134.  
  135. INT_LIBCLOSE
  136.     MOVE.L    _INTUITIONBASE(PC),A1
  137.     CALLEXEC CloseLibrary
  138.     RTS
  139.  
  140. ;--- Workbench to front ---
  141.  
  142. WORKBENCH_FRONT
  143.     CALLINT    WbenchToFront
  144.     RTS
  145.  
  146. ;--- Workbench to back ---
  147.  
  148. WORKBENCH_BACK
  149.     CALLINT    WbenchToBack
  150.     RTS
  151.  
  152. TEXT1:        DC.B    $9B,'3',$6D,'Press <RETURN> : '
  153. TEXT1_END:
  154. TEXT2:        DC.B    $9B,'3',$6D,'Root name : ',$9B,'0',$6D
  155. TEXT2_END:
  156. RETURN:        DC.B    10
  157. _WINDOWNAME    DC.B    'CON:10/10/400/180/Directory',0
  158.     EVEN
  159. _WINDOWHANDLE    DC.L    0
  160. _DOSNAME    DOSNAME
  161. _DOSBASE    DC.L    0
  162. _INTNAME    DC.B    'intuition.library',0
  163. _INTUITIONBASE    DC.L    0
  164.  
  165. PATH:        DC.B    'DF0:',0,0
  166.  
  167.     CNOP    0,4
  168.  
  169. FILEINFO:    DCB.L    260,0
  170.